<?php
	class Administrateur extends Table {
		public $noAdministrateur;
		public $adresseMailAdministrateur;
		public $hashPassword;
		
		public function __construct() {
			parent::__construct();
			
			$this->noAdministrateur 			= -1;
			$this->adresseMailAdministrateur 	= '';
			$this->hashPassword 				= '';
		}
		
		public function ajouter() {
			$st = $this->db->prepare("INSERT INTO Administrateur VALUES(NULL, ?, ?)");
			$valeurs = array($this->adresseMailAdministrateur, $this->hashPassword);
			
			$st->execute($valeurs);
			$this->noAdministrateur = $this->db->lastInsertId();
		}
		
		public function modifier() {
			$st = $this->db->prepare("UPDATE Administrateur SET adresseMailAdministrateur=?, hashPassword=? WHERE noAdministrateur=?");
			$valeurs = array($this->adresseMailAdministrateur, $this->hashPassword, $this->noAdministrateur);
			$st->execute($valeurs);
		}
		
		public function enregistrer() {	
			if ($this->noAdministrateur == -1) {
				$this->ajouter();
			}
			else {
				$this->modifier();
			}
		}
		
		public function remplirAvecPDOResult($result) {
			if (!is_array($result)) {
				throw new AdministrateurInconnuException();
			}
			
			$this->noAdministrateur 			= $result['noAdministrateur'];
			$this->adresseMailAdministrateur 	= $result['adresseMailAdministrateur'];
			$this->hashPassword					= $result['hashPassword'];
		}
		
		// -- --
		
		static public function recupererAvecNoAdministrateur($noAdministrateur) {
			$administrateur = new Administrateur();
			
			$sql = "SELECT * FROM Administrateur WHERE noAdministrateur=?";
			$st = DB::get_instance()->prepare($sql);
			$st->execute(array($noAdministrateur));
			
			$administrateur->remplirAvecPDOResult($st->fetch(PDO::FETCH_ASSOC));
			
			return $administrateur;
		}
		
		static public function recupererAvecAdresseMail($adresseMail) {
			$administrateur = new Administrateur();
			
			$sql = "SELECT * FROM Administrateur WHERE adresseMailAdministrateur=?";
			$st = DB::get_instance()->prepare($sql);
			$st->execute(array($adresseMail));
			
			$administrateur->remplirAvecPDOResult($st->fetch(PDO::FETCH_ASSOC));
			
			return $administrateur;
		}
		
		static public function recupererListe() {
			$liste = array();
			
			$sql = "SELECT * FROM Administrateur";
			$st = DB::get_instance()->prepare($sql);
			$st->execute();
			
			foreach ($st->fetchAll(PDO::FETCH_ASSOC) as $element) {
				$administrateur = new Administrateur();
				$administrateur->remplirAvecPDOResult($element);
				
				$liste[] = $administrateur;
			}
			
			return $liste;
		}
	}
	
	// -- --
	
	class AdministrateurException extends MyException {
		public function __construct() {
			parent::__construct();
		}
	}
	
	class AdministrateurInvalideException extends AdministrateurException {
		public function __construct() {
			parent::__construct();
		}
	}
	
	class AdministrateurInconnuException extends AdministrateurException {
		public function __construct() {
			parent::__construct();
		}
	}
?>